﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace CANO.Data.DAOs
{
	public class AsignacionesDAO
	{
		public int Contacto { get; set; }
		public int Usuario { get; set; }
		public string UsuarioDisplay { get; set; }

		public List<AsignacionesDAO> getByUser(int UserID)
		{
			using (CANOPropiedadesDCDataContext context = new CANOPropiedadesDCDataContext())
			{
				List<AsignacionesDAO> listAsignaciones = new List<AsignacionesDAO>();
				var asignaciones =
					from a in context.Asignacion
					where a.Usuario == UserID
					select a;

				foreach (var item in asignaciones)
				{
					AsignacionesDAO asignacion = new AsignacionesDAO();
					asignacion.Contacto = item.Contacto;
					asignacion.Usuario = item.Usuario;

					listAsignaciones.Add(asignacion);
				}

				return listAsignaciones;
			}
		}

		public static List<AsignacionesDAO> getAllByContactID(int ContactID)
		{
			using (CANOPropiedadesDCDataContext context = new CANOPropiedadesDCDataContext())
			{
				List<AsignacionesDAO> listAsignaciones = new List<AsignacionesDAO>();
				var asignaciones =
					from a in context.Asignacion
					where a.Contacto == ContactID
					select a;

				foreach (var item in asignaciones)
				{
					AsignacionesDAO asignacion = new AsignacionesDAO();
					asignacion.Contacto = item.Contacto;
					asignacion.Usuario = item.Usuario;
					asignacion.UsuarioDisplay = item.Usuario1.Apellido + ", " + item.Usuario1.Nombre;

					listAsignaciones.Add(asignacion);
				}

				return listAsignaciones;
			}
		}

		public void create()
		{
			using (CANOPropiedadesDCDataContext context = new CANOPropiedadesDCDataContext())
			{
				context.Asignacion.InsertOnSubmit(new Asignacion() { Contacto = this.Contacto, Usuario = this.Usuario });
				context.SubmitChanges();
			}
		}

		public void delete()
		{
			using (CANOPropiedadesDCDataContext context = new CANOPropiedadesDCDataContext())
			{
				var asignaciones =
					from a in context.Asignacion
					where a.Usuario == this.Usuario && a.Contacto == this.Contacto
					select a;



				//context.Asignacion.Attach(asignaciones.SingleOrDefault());
				context.Asignacion.DeleteOnSubmit(asignaciones.SingleOrDefault());
				context.SubmitChanges();
			}
		}
	}
}
